package com.hello.system.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.hello.common.core.annotation.Excel;
import com.hello.common.core.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 用户分享记录对象 shares
 * 
 * @author hello
 * @date 2025-10-29
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class Shares extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 分享ID（主键） */
    private Long shareId;

    /** 分享用户ID（关联users表） */
    @Excel(name = "分享用户ID", readConverterExp = "关=联users表")
    private Long userId;

    /** 分享标题 */
    @Excel(name = "分享标题")
    private String shareTitle;

    /** 分享内容类型（如activity-活动、comment-评论、shop-店铺、article-文章等） */
    @Excel(name = "分享内容类型", readConverterExp = "如=activity-活动、comment-评论、shop-店铺、article-文章等")
    private String contentType;

    /** 分享内容标题 */
    @Excel(name = "分享内容标题")
    private String contentTitle;

    /** 分享内容文本 */
    @Excel(name = "分享内容文本")
    private String contentText;

    /** 分享图片URL列表（JSON数组） */
    @Excel(name = "分享图片URL列表", readConverterExp = "J=SON数组")
    private String imageUrls;

    /** 分享者昵称 */
    @Excel(name = "分享者昵称")
    private String userNickname;

    /** 分享者性别 */
    @Excel(name = "分享者性别")
    private String userGender;

    /** 分享者所在城市 */
    @Excel(name = "分享者所在城市")
    private String userCity;

    /** 分享者头像URL */
    @Excel(name = "分享者头像URL")
    private String userAvatarUrl;

    /** 分享链接URL */
    @Excel(name = "分享链接URL")
    private String shareUrl;

    /** 分享查看次数 */
    @Excel(name = "分享查看次数")
    private Long viewCount;

    /** 分享状态（0-已删除，1-正常） */
    @Excel(name = "分享状态", readConverterExp = "0=-已删除，1-正常")
    private Integer status;

    /** 额外扩展数据（JSON格式） */
    @Excel(name = "额外扩展数据", readConverterExp = "J=SON格式")
    private String extraData;

    /** 分享时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "分享时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;

    public void setShareId(Long shareId) 
    {
        this.shareId = shareId;
    }

    public Long getShareId() 
    {
        return shareId;
    }
    public void setUserId(Long userId) 
    {
        this.userId = userId;
    }

    public Long getUserId() 
    {
        return userId;
    }
    public void setShareTitle(String shareTitle) 
    {
        this.shareTitle = shareTitle;
    }

    public String getShareTitle() 
    {
        return shareTitle;
    }
    public void setContentType(String contentType) 
    {
        this.contentType = contentType;
    }

    public String getContentType() 
    {
        return contentType;
    }
    public void setContentTitle(String contentTitle) 
    {
        this.contentTitle = contentTitle;
    }

    public String getContentTitle() 
    {
        return contentTitle;
    }
    public void setContentText(String contentText) 
    {
        this.contentText = contentText;
    }

    public String getContentText() 
    {
        return contentText;
    }
    public void setImageUrls(String imageUrls) 
    {
        this.imageUrls = imageUrls;
    }

    public String getImageUrls() 
    {
        return imageUrls;
    }
    public void setUserNickname(String userNickname) 
    {
        this.userNickname = userNickname;
    }

    public String getUserNickname() 
    {
        return userNickname;
    }
    public void setUserGender(String userGender) 
    {
        this.userGender = userGender;
    }

    public String getUserGender() 
    {
        return userGender;
    }
    public void setUserCity(String userCity) 
    {
        this.userCity = userCity;
    }

    public String getUserCity() 
    {
        return userCity;
    }
    public void setUserAvatarUrl(String userAvatarUrl) 
    {
        this.userAvatarUrl = userAvatarUrl;
    }

    public String getUserAvatarUrl() 
    {
        return userAvatarUrl;
    }
    public void setShareUrl(String shareUrl) 
    {
        this.shareUrl = shareUrl;
    }

    public String getShareUrl() 
    {
        return shareUrl;
    }
    public void setViewCount(Long viewCount) 
    {
        this.viewCount = viewCount;
    }

    public Long getViewCount() 
    {
        return viewCount;
    }
    public void setStatus(Integer status) 
    {
        this.status = status;
    }

    public Integer getStatus() 
    {
        return status;
    }
    public void setExtraData(String extraData) 
    {
        this.extraData = extraData;
    }

    public String getExtraData() 
    {
        return extraData;
    }
    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }
    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("shareId", getShareId())
            .append("userId", getUserId())
            .append("shareTitle", getShareTitle())
            .append("contentType", getContentType())
            .append("contentTitle", getContentTitle())
            .append("contentText", getContentText())
            .append("imageUrls", getImageUrls())
            .append("userNickname", getUserNickname())
            .append("userGender", getUserGender())
            .append("userCity", getUserCity())
            .append("userAvatarUrl", getUserAvatarUrl())
            .append("shareUrl", getShareUrl())
            .append("viewCount", getViewCount())
            .append("status", getStatus())
            .append("extraData", getExtraData())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .toString();
    }
}
